Many modern microprocessors have both a user-visible architecture (sometimes referred to as “macroarchitecture”), i.e., the instruction set and resources that programmers may use, and a distinct microarchitecture. A macroinstruction is an instruction in the instruction set of the microprocessor architecture. In contrast, a micro-op is an instruction in the microinstruction set of the microarchitecture. The execution units of such a microprocessor actually execute micro-ops rather than macroinstructions. An instruction translator translates macroinstructions into one or more micro-ops that are sent to the execution units for execution. The instruction throughput, or rate at which the microprocessor can process macroinstructions of a program, is largely a function of the rate at which the instruction translator translates program macroinstructions into micro-ops. This is particularly true for superscalar and/or out-of-order execution microprocessors.